package model

import (
	"myplatform/libs/auth"
	"time"
)

type UserModel struct {
	Uid         uint64 `gorm:"column:uid;primary_key;auto_increment" json:"uid"`
	PhoneNumber string `gorm:"column:phonenumber;not null" json:"phonenumber" binding:"required" form:"phonenumber"`
	Password    string `gorm:"column:password;not null" json:"password" binding:"required" form:"password"`
	//权限字段
	Role uint64 `gorm:"column:role;not null;default:0" json:"role"`
	//默认字段，创建的时候，自动填充时间
	CreateAt  time.Time `gorm:"column:created_at" json:"create_at"`
	UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"`

	//用户收藏表关联

}

// 注册
func (u *UserModel) Create() error {
	return DB.Self.Create(&u).Error
}

// 密码加密 封装成方法
func (u *UserModel) Encrypt() (err error) {
	u.Password, err = auth.Encrypt(u.Password)
	return
}

// 验证用户是否已存在
func Justify(phonenumber string) error {
	u := &UserModel{}
	err := DB.Self.Where("phonenumber=?", phonenumber).First(u).Error
	return err
}

// 根据用户手机号查询用户信息
func GetUserByPhonenumber(phonenumber string) (*UserModel, error) {
	u := &UserModel{}
	r := DB.Self.Where("phonenumber=?", phonenumber).First(&u)
	return u, r.Error
}

// 删除用户
func (u *UserModel) Delete() error {
	return DB.Self.Delete(&u).Error
}
